package com.lg.erp.util;


import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

import java.io.IOException;
import java.io.InputStream;

/**
 * FTP上传工具类
 */
    public class FtpUtil {
        /**
         *
         \* @param host 主机
         \* @param port 端口
         \* @param username 账号
         \* @param password 密码
         \* @param basePath 基础路径
         \* @param filename 文件名
         \* @param inputStream 文件流
         \* @return
         */
        public static boolean upload(String host, int port, String username, String password,
                                     String basePath, String filename, InputStream inputStream){
            FTPClient ftpClient = new FTPClient();
            try {
                //连接ftp服务器
                ftpClient.connect(host,port);
                //登录服务器
                ftpClient.login(username, password);
                int replyCode = ftpClient.getReplyCode();
                //判断登录结果
                if(!FTPReply.isPositiveCompletion(replyCode)){
                    //如果没有正常登录
                    ftpClient.disconnect();
                    return false;
                }
                //切换目录
                if(ftpClient.changeWorkingDirectory(basePath)){
                    //设置被动模式
                    ftpClient.enterLocalPassiveMode();
                    //设置上传文件类型为二进制
                    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
                    //上传
                    if(ftpClient.storeFile(filename,inputStream)){
                        inputStream.close();
                        ftpClient.logout();
                        ftpClient.disconnect();
                        return true;
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return false;
        }
    }